/* @(#)CommunityMember.java
** 
** Copyright (C) 2012 by Steven D. Stamps
**
**             Trademarks & Copyrights
** Flywheel Management Science(TM), Flywheel Management Model(TM),
** Flywheel Story Editor(TM) and FlywheelMS(TM) are exclusive trademarks
** of Steven D. Stamps and may only be used freely for the purpose of
** identifying the unforked version of this software.  Subsequent forks
** may not use these trademarks.  All other rights are reserved.
**
** DecKanGL (Decorated Kanban Glyph Language) and TribKn (Tribal Knowledge)
** are also exclusive trademarks of Steven D. Stamps.  These may be used
** freely within the unforked FlywheelMS application and documentation.
** All other rights are reserved.
**
** gConGUI (game Controller Graphical User Interface) is an exclusive
** trademark of Steven D. Stamps.  This trademark may be used freely
** within the unforked FlywheelMS application and documentation.
** All other rights are reserved.
**
** Trademark information is available at
** <http://www.flywheelms.com/trademarks>
**
** Flywheel Management Science(TM) is a copyrighted body of management
** metaphors, governance processes, and leadership techniques that is
** owned by Steven D. Stamps.  These copyrighted materials may be freely
** used, without alteration, by the community (users and developers)
** surrounding this GPL3-licensed software.  Additional copyright
** information is available at <http://www.flywheelms.org/copyrights>
**
**              GPL3 Software License
** This program is free software: you can use it, redistribute it and/or
** modify it under the terms of the GNU General Public License, version 3,
** as published by the Free Software Foundation. This program is distributed
** in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
** even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
** PURPOSE.  See the GNU General Public License for more details. You should
** have received a copy of the GNU General Public License, in a file named
** COPYING, along with this program.  If you cannot find your copy, see
** <http://www.gnu.org/licenses/gpl-3.0.html>.
*/

package com.flywheelms.library.fmm.node.impl.headline;

import com.flywheelms.library.fmm.node.NodeId;
import com.flywheelms.library.fmm.node.impl.FmmNodeImpl;
import com.flywheelms.library.fmm.node.impl.enumerator.CommunityMemberStatus;
import com.flywheelms.library.fmm.node.interfaces.FmmSupportingNode;

public class CommunityMember extends FmmHeadlineNodeImpl implements FmmSupportingNode {

	private static final long serialVersionUID = -4151339832738764317L;
	private static final CommunityMember NULL_COMMUNITY_MEMBER = new CommunityMember("CMR-" + NodeId.NULL_UUID);
	static {
		NULL_COMMUNITY_MEMBER.setLastName("");
		NULL_COMMUNITY_MEMBER.setFirstName("");
	}
	public static CommunityMember getNullValue() {
		return CommunityMember.NULL_COMMUNITY_MEMBER;
	}
	public boolean isNullValue() {
		return this.getNodeId().getNodeIdString().contains(NodeId.NULL_UUID);
	}
	
	private String communityMemberStatusCode;
	private CommunityMemberStatus communityMemberStatus;
	private float allocationSlack;
	private String authenticationUid;
	private String firstName;
	private String lastName;
	private String nickName;
	private String emailAddress;
	private String cellPhone;
	private String workPhone;

	public CommunityMember(NodeId aNodeId) {
		super(aNodeId);
		// TODO Auto-generated constructor stub
	}
	
	public CommunityMember(String anExistingNodeIdString) {
		super(NodeId.rehydrate(
				CommunityMember.class,
				anExistingNodeIdString ));
		// TODO Auto-generated constructor stub
	}

	public String getCommunityMemberStatusCode() {
		return this.communityMemberStatusCode;
	}
	
	public void setCommunityMemberStatusCode(String aCode) {
		this.communityMemberStatusCode = aCode;
	}

	public void setCommunityMemberStatus(String aCommunityMemberStatusCode) {
		this.communityMemberStatusCode = aCommunityMemberStatusCode;
	}

	public CommunityMemberStatus getCommunityMemberStatus() {
		return this.communityMemberStatus;
	}

	public void setCommunityMemberStatus(CommunityMemberStatus aCommunityMemberStatus) {
		this.communityMemberStatus = aCommunityMemberStatus;
	}

	public float getAllocationSlack() {
		return this.allocationSlack;
	}

	public void setAllocationSlack(float anAllocationSlack) {
		this.allocationSlack = anAllocationSlack;
	}

	public String getAuthenticationUid() {
		return this.authenticationUid;
	}

	public void setAuthenticationUid(String anAuthenticationUid) {
		this.authenticationUid = anAuthenticationUid;
	}

	public String getFirstName() {
		return this.firstName;
	}

	public void setFirstName(String aFirstName) {
		this.firstName = aFirstName;
	}

	public String getLastName() {
		return this.lastName;
	}

	public void setLastName(String aLastName) {
		this.lastName = aLastName;
	}

	public String getNickName() {
		return this.nickName;
	}

	public void setNickName(String aNickName) {
		this.nickName = aNickName;
	}

	public String getEmailAddress() {
		return this.emailAddress;
	}

	public void setEmailAddress(String anEmailAddress) {
		this.emailAddress = anEmailAddress;
	}

	public String getCellPhone() {
		return this.cellPhone;
	}

	public void setCellPhone(String aCellPhone) {
		this.cellPhone = aCellPhone;
	}

	public String getWorkPhone() {
		return this.workPhone;
	}

	public void setWorkPhone(String aWorkPhone) {
		this.workPhone = aWorkPhone;
	}

	@Override
	protected void initializeNodeCompletionSummaryMap() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public String toString() {
		return getFirstName() + " " + getLastName();
	}

	public String getName() {
		return toString();
	}
	
	@Override
	public String getHeadline() {
		return toString();
	}

}
